#ifndef ADMINDATA_H
#define ADMINDATA_H


#include <QString>
#include <QDate>
#include "DateRange.h"
#include "Course.h"
#include "Professor.h"
#include "user.h"
#include "OutlineSection.h"


class AdminData
{
public:
    AdminData();
    AdminData(const QVector<User> &users);
    AdminData(const QVector<User> &users, const QVector<Professor> &profs, const QVector<DateRange> &daysOff);
    AdminData(  const DateRange semDuration,
                const QVector<DateRange> daysOff,
                const QVector<OutlineSection> outlineSections,
                const QVector<Course> courses,
                const QVector<Professor> profs,
                const QVector<User> users);

    DateRange getSemDuration() const;
    QVector<DateRange> getDaysOff() const;
    QVector<OutlineSection> getOutlineSections() const;
    QVector<Course> getCourses() const;
    QVector<Course> getCourses();
    QVector<Professor> getProfs() const;
    QVector<User> getUsers() const;

    void addDaysOff(DateRange newDaysOff);
    void addOutlineSection(OutlineSection newOutlineSections);
    void addCourse(Course newCourses);
    void addProf(Professor newProfs);
    void addUser(User newUsers);
    
    void setSemDuration(DateRange *newSemDur);
    void setDaysOff(QVector<DateRange> *newDaysOff);
    void setOutlineSections(QVector<OutlineSection> *newOutlineSections);
    void setCourse(QVector<Course> *newCourses);
    void setProfs(QVector<Professor> *newProfs);
    void setUsers(QVector<User> newUsers);

private:
    DateRange semDuration;
    QVector<DateRange> daysOff;
    QVector<OutlineSection> outlineSections;
    QVector<Course> courses;
    QVector<Professor> profs;
    QVector<User> users;
};

QDataStream &operator<<(QDataStream &out, const AdminData &data);
QDataStream &operator>>(QDataStream &in, AdminData &data);


#endif // ADMINDATA_H
